﻿//注册layui的JS扩展方法
layui.define(['tableSelect'], function (exports) {
    var tableSelect = layui.tableSelect;
    /**选择字典的下拉框注册注册**/
    var dictTableSelect = function () {

    };
    /**
    * 加载字典数据
    */
    dictTableSelect.prototype.render = function (opt) {
        opt.type = opt.type || 'radio';

        //获取表格基本信息
        $.ajax({
            type: "post",
            url: '/GetDictClass.aspx',
            data: { dictClassCode: opt.sysDictClassCode },
            success: function (msg) {
                if (msg.code != "0") {
                    layer.msg(msg.msg, {
                        icon: 2,
                        time: 2000 //2秒关闭（如果不配置，默认是3秒）
                    });
                    return;
                }
                //加载数据
                loadtable(msg.data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                layer.msg('请求失败！', {
                    icon: 2,
                    time: 3000 //3秒关闭
                });
            }
        });
        /**加载table表格数据 */
        function loadtable(dictclassdata) {
            //验证数据是否分组、
            if (!dictclassdata) {
                return;
            }

            var cols = [[
                { type: opt.type },
                { field: 'sysDictCode', title: '代码', width: 150 },
                { field: 'sysDictContent', title: '内容' },
            ]];
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename1)) {
                cols[0].push({ field: 'sysDictExtend1', title: dictclassdata.extendRename1 });
            }

            if (!Auxiliary.IsEmpty(dictclassdata.extendRename2)) {
                cols[0].push({ field: 'sysDictExtend2', title: dictclassdata.extendRename2 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename3)) {
                cols[0].push({ field: 'sysDictExtend3', title: dictclassdata.extendRename3 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename4)) {
                cols[0].push({ field: 'sysDictExtend4', title: dictclassdata.extendRename4 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename5)) {
                cols[0].push({ field: 'sysDictExtend5', title: dictclassdata.extendRename5 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename6)) {
                cols[0].push({ field: 'sysDictExtend6', title: dictclassdata.extendRename6 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename7)) {
                cols[0].push({ field: 'sysDictExtend7', title: dictclassdata.extendRename7 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename8)) {
                cols[0].push({ field: 'sysDictExtend8', title: dictclassdata.extendRename8 });
            }
            if (!Auxiliary.IsEmpty(dictclassdata.extendRename9)) {
                cols[0].push({ field: 'sysDictExtend9', title: dictclassdata.extendRename9 });
            }


            if (dictclassdata.sysDictClassIsGrading === true) {
                //加载分组数据形式
                tableSelect.render({
                    tabletype: 'treeTable',
                    elem: opt.key,	//定义输入框input对象 必填
                    checkedKey: 'sysDictCode', //表格的唯一建值，非常重要，影响到选中状态 必填
                    searchKey: 'keyWord',	//搜索输入框的name值 默认keyword
                    searchPlaceholder: '关键词搜索',	//搜索输入框的提示文字 默认关键词搜索
                    table: {	//定义表格参数，与LAYUI的TABLE模块一致，只是无需再定义表格elem
                          even: true //开启隔行背景
                        , title: '字典信息列表'
                        , tree: {
                            iconIndex: 2,                // 折叠图标显示在第几列
                            idName: 'sysDictCode',       // 自定义id字段的名称
                            pidName: 'sysDictSuperiorCode',         // 自定义标识是否还有子节点的字段名称
                            haveChildName: 'sysDictHaveChild',  // 自定义标识是否还有子节点的字段名称
                            isPidData: true,              // 是否是pid形式数据
                            disabledName:'sysDictIsSelect'
                        },
                        cols: cols,
                        url: '/GetDict.aspx',
                        where: { sysDictClassCode: opt.sysDictClassCode },
                        request: { pidName: 'sysDictSuperiorCode' }
                        , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据

                            if (res.code !== 0) {
                                return {
                                    "code": res.code, //解析接口状态
                                    "msg": res.msg, //解析提示文本
                                    "count": 0, //解析数据长度
                                    "data": null //解析数据列表
                                };
                            }
                            else {
                                return {
                                    "code": res.code, //解析接口状态
                                    "msg": res.msg, //解析提示文本
                                    "count": res.data.totalCount, //解析数据长度
                                    "data": res.data.list //解析数据列表
                                };
                            }

                        }
                    },
                    done: function (elem, data) {
                        //选择完后的回调，包含2个返回值 elem:返回之前input对象；data:表格返回的选中的数据 []
                        //拿到data[]后 就按照业务需求做想做的事情啦~比如加个隐藏域放ID...

                        var NEWJSON = [];
                        layui.each(data.data, function (index, item) {
                            NEWJSON.push(item.sysDictContent);
                        })

                        elem.val(NEWJSON.join(","));
                        elem.data("selectData", data.data);
                        if (opt.callback) {
                            opt.callback(elem, data.data);
                        }
                    }
                });
            }
            else
            {
                //加载非分组形式数据

                tableSelect.render({
                    elem: opt.key,	//定义输入框input对象 必填
                    checkedKey: 'sysDictCode', //表格的唯一建值，非常重要，影响到选中状态 必填
                    searchKey: 'keyWord',	//搜索输入框的name值 默认keyword
                    searchPlaceholder: '关键词搜索',	//搜索输入框的提示文字 默认关键词搜索
                    table: {	//定义表格参数，与LAYUI的TABLE模块一致，只是无需再定义表格elem
                        url: '/GetDict.aspx',
                        where: { sysDictClassCode: opt.sysDictClassCode },
                        limit: 10,
                        disabledName: 'sysDictIsSelect',
                        method: 'post',
                        even: true, //开启隔行背景
                        totalRow: true,
                        cols: cols,
                        page: { //支持传入 laypage 组件的所有参数（某些参数除外，如：jump/elem） - 详见文档
                            layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
                            , curr: 1 //设定初始在第 1 页
                            , groups: 5 //只显示 1 个连续页码
                            , first: '首页' //首页 自定义内容，false就是不开启
                            , last: '尾页' //尾页 自定义内容，false就是不开启
                        }
                        , request: {
                            pageName: 'PageIndex' //页码的参数名称，默认：page
                            , limitName: 'PageSize' //每页数据量的参数名，默认：limit
                        }
                        , response: {
                            statusName: 'code' //规定数据状态的字段名称，默认：code
                            , statusCode: 0 //规定成功的状态码，默认：0
                            , msgName: 'msg' //规定状态信息的字段名称，默认：msg
                            , countName: 'count' //规定数据总数的字段名称，默认：count
                            , dataName: 'data' //规定数据列表的字段名称，默认：data
                        }
                        , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据

                            if (res.code !== 0) {
                                return {
                                    "code": res.code, //解析接口状态
                                    "msg": res.msg, //解析提示文本
                                    "count": 0, //解析数据长度
                                    "data": null //解析数据列表
                                };
                            }
                            else {
                                return {
                                    "code": res.code, //解析接口状态
                                    "msg": res.msg, //解析提示文本
                                    "count": res.data.totalCount, //解析数据长度
                                    "data": res.data.list //解析数据列表
                                };
                            }

                        }

                    },
                    done: function (elem, data) {
                        //选择完后的回调，包含2个返回值 elem:返回之前input对象；data:表格返回的选中的数据 []
                        //拿到data[]后 就按照业务需求做想做的事情啦~比如加个隐藏域放ID...

                        var NEWJSON = [];
                        layui.each(data.data, function (index, item) {
                            NEWJSON.push(item.sysDictContent);
                        })

                        elem.val(NEWJSON.join(","));
                        elem.data("selectData", data.data);
                        if (opt.callback) {
                            opt.callback(elem, data.data);
                        }
                    }
                });

            }
        }


    };
    var dictTable = new dictTableSelect();
    exports('dictTableSelect', dictTable);
});